/* list.h
 *
 * InnehÂller typdeklarationer fˆr listan
 *
 * AUTHOR: Christian Ohlsson
 * DATE: 2001-01-30
 * VERSION: 1.2 (2006-09-30)
 * CONTACT: Christian.Ohlsson@htu.se
 * Rev Per-Anders Enarsson 20080922
 ********************************************************************
*/



#ifndef LIST_H                                              // Om listan ej redan ‰r definierad
#define LIST_H                                              // ... sÂ sÂ gˆr det



/* En nod i listan */
typedef struct ListNode {                                   // En nod i listan

   char sgName[50],sfName[50],sphoneNumber[50];             // ... har  data
   struct ListNode *nextPtr;                                // ... och en pekare till n‰sta nod
}ListNode;

typedef ListNode *NodePtr;                                  // Vi skapar ett alias fˆr ListNoden

/* Listan har head och tail */
typedef struct List {                                       // VÂr lista innehÂller pekare till
   NodePtr head;                                            // ...det fˆrsta elementet
   NodePtr tail;                                            // ...och till det sista
}List;

//-------------------------------------------
//Funktionsdeklarationer
//

void  initList                (List *);                     //Initiera lista
void  destroyList             (List *);                     //Deinitiera lista
void  printList               (List *);                     //Skriva lista till skärm
void  insertAtFront           (List *, const int);          //sätta in element främst
void  insertAtBack            (List *, const int);          //Sätta in element sist
int   removeFromFront         (List *,int);                 //Ta bort element från första plats i listan
int   removeFromBack          (List *,int);                 //Ta bort element från sista plats i listan
int   removeInList            (List *,int);                 //Ta bort element från plats x i listan
void  skipGarb                ();                           //Slänga skräptecken vid inmatning
void  skipFileGarb            ();                           //Slänga skräptecken vid filinmatnng
int   saveListToFile          (List *);                     //Spara listan i minnet till fil
int   openListFromFile        (List *,char *);              //Öppna en fil till minnet
void  exitPrg                 ();                           //Något är totalt fel, avsluta
char  *fileName               ();                           //Hämta filnamn från användare
int   searchInList            (List *, int);                //Sök efter en eller flera poster
int   checkIfOverwriteFile    ();                           //Kolla om vi skall skriva över eller appenda
int   checkSmallerOrEqual     (char *, char *, char *);     //Jämför poster och se om mindre, lika eller större



#endif                                                      // Avsluta deklarationen LIST_H
